Hệ thống quản lý cửa hàng y tế bằng Python

1 from tkinter import *
2 import time
3 import sqlite3
4 import random
5 import tempfile
6 import win32api
7 import win32print
8
9 f=
''
10 flag=
''
11 flags=
''
12
13 login=sqlite3.connect(
"admin.db")
14 l=login.cursor()
15
16 c=sqlite3.connect(
"medicine.db")
17 cur=c.cursor()
18
19 columns=(
'Sl No', 'Name', 'Type', 'Quantity Left', 'Cost', 'Purpose', 'Expiry Date', 'Rack location', 'Manufacture')
20
21 def open_win(): #OPENS MAIN MENU----------------------------------------------------------------------------MAIN MENU
22     
global apt, flag
23     flag=
'apt'
24     apt=Tk()
25     apt.title(
"Interface")
26     Label(apt, text=
"CHEMIST AND DRUGSHOP").grid(row=0,column=0,columnspan=3)
27     Label(apt, text=
'*'*80).grid(row=1,column=0,columnspan=3)
28     Label(apt, text=
'-'*80).grid(row=3,column=0,columnspan=3)
29
30     Label(apt, text=
"Stock Maintenance").grid(row=2,column=0)
31     Button(apt,text=
'New V.C.', width=25, command=val_cus).grid(row=4,column=0)
32     Button(apt,text=
'Add product to Stock', width=25,command=stock).grid(row=5,column=0)
33     Button(apt,text=
'Delete product from Stock', width=25,command=delete_stock).grid(row=6,column=0)
34     
35
36     Label(apt, text=
"Access Database").grid(row=2,column=1)
37     Button(apt,text=
'Modify',width=15, command=modify).grid(row=4,column=1)
38     Button(apt,text=
'Search', width=15, command=search).grid(row=5,column=1)
39     Button(apt,text=
'Expiry Check', width=15, command=exp_date).grid(row=6,column=1)
40
41     Label(apt, text=
"Handle Cash Flows").grid(row=2,column=2)
42     Button(apt,text=
"Check Today's Revenue", width=20,command=show_rev).grid(row=5,column=2)
43     Button(apt,text=
'Billing', width=20, command=billing).grid(row=4,column=2)
44
45     Label(apt, text=
'-'*80).grid(row=12,column=0,columnspan=3)
46     Button(apt,text=
'Logout',command=again).grid(row=13, column=2)
47     apt.mainloop()
48
49 def delete_stock(): #OPENS DELETE WINDOW----------------------------------------------------DELETES A PARTICULAR STOCK ITEM
50     
global cur, c, flag, lb1, d
51     apt.destroy()
52     flag=
'd'
53     d=Tk()
54     d.title(
"Delete a product from Stock")
55     Label(d,text=
'Enter Product to delete:').grid(row=0,column=0)
56     Label(d,text=
'',width=30,bg='white').grid(row=0,column=1)
57     Label(d,text=
'Product').grid(row=2,column=0)
58     Label(d,text=
'Qty. Exp.dt. Cost ').grid(row=2,column=1)
59     ren()
60     b=Button(d,width=
20,text='Delete',command=delt).grid(row=0,column=3)
61     b=Button(d,width=
20,text='Main Menu',command=main_menu).grid(row=5,column=3)
62     d.mainloop()
63
64 def ren():
65     
global lb1,d,cur,c
66     def onvsb(*args):
67         lb1.yview(*args)
68         lb2.yview(*args)
69     def onmousewheel():
70         lb1.ywiew=(
'scroll',event.delta,'units')
71         lb2.ywiew=(
'scroll',event.delta,'units')
72         
return 'break'
73     cx=
0
74     vsb=Scrollbar(orient=
'vertical',command=onvsb)
75     lb1=Listbox(d,width=
25, yscrollcommand=vsb.set)
76     lb2=Listbox(d,width=
30,yscrollcommand=vsb.set)
77     vsb.grid(row=
3,column=2,sticky=N+S)
78     lb1.grid(row=
3,column=0)
79     lb2.grid(row=
3,column=1)
80     lb1.bind(
'<MouseWheel>',onmousewheel)
81     lb2.bind(
'<MouseWheel>',onmousewheel)
82     cur.execute(
"select *from med")
83     
for i in cur:
84         cx+=
1
85         s1=[str(i[
0]),str(i[1])]
86         s2=[str(i[
3]),str(i[6]),str(i[4])]
87         lb1.insert(cx,
'. '.join(s1))
88         lb2.insert(cx,
' '.join(s2))
89     c.commit()
90     lb1.bind(
'<<ListboxSelect>>', sel_del)
91
92 def sel_del(e):
93     
global lb1, d, cur, c,p, sl2
94     p=lb1.curselection()
95     print (p)
96     x=
0
97     sl2=
''
98     cur.execute(
"select * from med")
99     
for i in cur:
100         print (x, p[
0])
101         
if x==int(p[0]):
102             sl2=i[
0]
103             
break
104         x+=
1
105     c.commit()
106     print (sl2)
107     Label(d,text=
' ',bg='white', width=20).grid(row=0,column=1)
108     cur.execute(
'Select * from med')
109     
for i in cur:
110         
if i[0]==sl2:
111             Label(d,text=i[
0]+'. '+i[1],bg='white').grid(row=0,column=1)
112     c.commit()
113     
114 def delt():
115     
global p,c,cur,d
116     cur.execute(
"delete from med where sl_no=?",(sl2,))
117     c.commit()
118     ren()
119
120 def modify(): # window
for modification-----------------------------------------------------------------------MODIFY
121     
global cur, c, accept, flag, att, up, n, name_, apt, st, col,col_n
122     col=(
'', '', 'type', 'qty_left', 'cost', 'purpose', 'expdt', 'loc', 'mfg')
123     col_n=(
'', '', 'Type', 'Quantity Left', 'Cost', 'Purpose', 'Expiry Date', 'Rack location', 'Manufacture')
124     flag=
'st'
125     name_=
''
126     apt.destroy()
127     n=[]
128     cur.execute(
"select * from med")
129     
for i in cur:
130         n.append(i[
1])
131     c.commit()
132     st=Tk()
133     st.title(
'MODIFY')
134     Label(st, text=
'-'*48+' MODIFY DATABASE '+'-'*48).grid(row=0, column=0,columnspan=6)
135     def onvsb(*args):
136         name_.yview(*args)
137     def onmousewheel():
138         name_.ywiew=(
'scroll',event.delta,'units')
139         
return 'break'
140     cx=
0
141     vsb=Scrollbar(orient=
'vertical',command=onvsb)
142     vsb.grid(row=
1,column=3,sticky=N+S)
143     name_=Listbox(st,width=
43,yscrollcommand=vsb.set)
144     cur.execute(
"select *from med")
145     
for i in cur:
146         cx+=
1
147         name_.insert(cx,(str(i[
0])+'. '+str(i[1])))
148         name_.grid(row=
1,column=1,columnspan=2)
149     c.commit()
150     name_.bind(
'<MouseWheel>',onmousewheel)
151     name_.bind(
'<<ListboxSelect>>', sel_mn)
152
153     Label(st, text=
'Enter Medicine Name: ').grid(row=1, column=0)
154     Label(st, text=
'Enter changed Value of: ').grid(row=2, column=0)
155     att=Spinbox(st, values=col_n)
156     att.grid(row=
2, column=1)
157     up=Entry(st)
158     up.grid(row=
2, column=2)
159     Button(st,width=
10,text='Submit', command=save_mod).grid(row=2, column=4)
160     Button(st,width=
10,text='Reset', command=res).grid(row=2, column=5)
161     Button(st,width=
10,text='Show data', command=show_val).grid(row=1, column=4)
162     Label(st, text=
'-'*120).grid(row=3,column=0,columnspan=6)
163     Button(st,width=
10,text='Main Menu',command=main_menu).grid(row=5,column=5)
164     st.mainloop()
165
166 def res():
167     
global st, up
168     up=Entry(st)
169     up.grid(row=
2, column=2)
170     Label(st,width=
20, text=' ').grid(row=5,column=i)
171
172 def sel_mn(e):
173     
global n,name_, name_mn, sl, c, cur
174     name_mn=
''
175     p=name_.curselection()
176     print (p)
177     x=
0
178     sl=
''
179     cur.execute(
"select * from med")
180     
for i in cur:
181         print (x, p[
0])
182         
if x==int(p[0]):
183             sl=i[
0]
184             
break
185         x+=
1
186     c.commit()
187     print (sl)
188     name_nm=n[
int(sl)]
189     print (name_nm)
190     
191 def show_val():
192     
global st, name_mn, att, cur, c, col, col_n, sl
193     
for i in range(3):
194         Label(st,width=
20, text=' ').grid(row=5,column=i)
195     cur.execute(
"select * from med")
196     
for i in cur:
197         
for j in range(9):
198             
if att.get()==col_n[j] and sl==i[0]:
199                 Label(st, text=str(i[
0])).grid(row=5,column=0)
200                 Label(st, text=str(i[
1])).grid(row=5,column=1)
201                 Label(st, text=str(i[j])).grid(row=
5,column=2)
202     c.commit()
203
204 def save_mod(): #save modified data
205     
global cur, c, att, name_mn, st, up, col_n, sl
206     
for i in range(9):
207         
if att.get()==col_n[i]:
208             a=col[i]
209     sql=
"update med set '%s' = '%s' where sl_no = '%s'" % (a,up.get(),sl)
210     cur.execute(sql)
211     c.commit()
212     Label(st, text=
'Updated!').grid(row=5,column=4)
213     
214     
215 def stock(): #
add to stock window------------------------------------------------------------------------ADD TO STOCK
216     
global cur, c, columns, accept, flag, sto, apt
217     apt.destroy()
218     flag=
'sto'
219     accept=[
'']*10
220     sto=Tk()
221     sto.title(
'STOCK ENTRY')
222     Label(sto,text=
'ENTER NEW PRODUCT DATA TO THE STOCK').grid(row=0,column=0,columnspan=2)
223     Label(sto,text=
'-'*50).grid(row=1,column=0,columnspan=2)
224     
for i in range(1,len(columns)):
225         Label(sto,width=
15,text=' '*(14-len(str(columns[i])))+str(columns[i])+':').grid(row=i+2,column=0)
226         accept[i]=Entry(sto)
227         accept[i].grid(row=i+
2, column=1)
228     Button(sto,width=
15,text='Submit',command=submit).grid(row=12,column=1)
229     Label(sto,text=
'-'*165).grid(row=13,column=0,columnspan=7)
230     Button(sto,width=
15,text='Reset',command=reset).grid(row=12,column=0)
231     Button(sto,width=
15,text='Refresh stock',command=ref).grid(row=12,column=4)
232     
for i in range(1,6):
233         Label(sto,text=columns[i]).grid(row=
14,column=i-1)
234     Label(sto,text=
'Exp Rack Manufacturer ').grid(row=14,column=5)
235     Button(sto,width=
10,text='Main Menu',command=main_menu).grid(row=12,column=5)
236     
ref()
237     sto.mainloop()
238
239 def
ref(): # creates a multi-listbox manually to show the whole database
240     
global sto, c, cur
241     def onvsb(*args):
242         lb1.yview(*args)
243         lb2.yview(*args)
244         lb3.yview(*args)
245         lb4.yview(*args)
246         lb5.yview(*args)
247         lb6.yview(*args)
248
249     def onmousewheel():
250         lb1.ywiew=(
'scroll',event.delta,'units')
251         lb2.ywiew=(
'scroll',event.delta,'units')
252         lb3.ywiew=(
'scroll',event.delta,'units')
253         lb4.ywiew=(
'scroll',event.delta,'units')
254         lb5.ywiew=(
'scroll',event.delta,'units')
255         lb6.ywiew=(
'scroll',event.delta,'units')
256         
257         
return 'break'
258     cx=
0
259     vsb=Scrollbar(orient=
'vertical',command=onvsb)
260     lb1=Listbox(sto,yscrollcommand=vsb.
set)
261     lb2=Listbox(sto,yscrollcommand=vsb.
set)
262     lb3=Listbox(sto,yscrollcommand=vsb.
set,width=10)
263     lb4=Listbox(sto,yscrollcommand=vsb.
set,width=7)
264     lb5=Listbox(sto,yscrollcommand=vsb.
set,width=25)
265     lb6=Listbox(sto,yscrollcommand=vsb.
set,width=37)
266     vsb.grid(row=
15,column=6,sticky=N+S)
267     lb1.grid(row=
15,column=0)
268     lb2.grid(row=
15,column=1)
269     lb3.grid(row=
15,column=2)
270     lb4.grid(row=
15,column=3)
271     lb5.grid(row=
15,column=4)
272     lb6.grid(row=
15,column=5)
273     lb1.bind(
'<MouseWheel>',onmousewheel)
274     lb2.bind(
'<MouseWheel>',onmousewheel)
275     lb3.bind(
'<MouseWheel>',onmousewheel)
276     lb4.bind(
'<MouseWheel>',onmousewheel)
277     lb5.bind(
'<MouseWheel>',onmousewheel)
278     lb6.bind(
'<MouseWheel>',onmousewheel)
279     cur.execute(
"select *from med")
280     
for i in cur:
281         cx+=
1
282         seq=(str(i[
0]),str(i[1]))
283         lb1.insert(cx,
'. '.join(seq))
284         lb2.insert(cx,i[
2])
285         lb3.insert(cx,i[
3])
286         lb4.insert(cx,i[
4])
287         lb5.insert(cx,i[
5])
288         lb6.insert(cx,i[
6]+' '+i[7]+' '+i[8])
289     c.commit()
290
291 def reset():
292     
global sto, accept
293     
for i in range(1,len(columns)):
294         Label(sto,width=
15,text=' '*(14-len(str(columns[i])))+str(columns[i])+':').grid(row=i+2,column=0)
295         accept[i]=Entry(sto)
296         accept[i].grid(row=i+
2, column=1)
297     
298 def submit(): #
for new stock submission
299     
global accept, c, cur, columns, sto
300     prev=time.clock()
301     x=[
'']*10
302     cur.execute(
"select * from med")
303     
for i in cur:
304         y=
int(i[0])
305     
for i in range(1,9):
306         x[i]=accept[i].
get()
307     sql=
"insert into med values('%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (y+1,x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8])
308     cur.execute(sql)
309     cur.execute(
"select * from med")
310     c.commit()
311     now=time.clock()
312     print (now-prev)
313     top=Tk()
314     Label(top,width=
20, text='Success!').pack()
315     top.mainloop()
316     main_menu()
317
318 def chk(): #checks
if the medicine is already present so that can be modified
319     
global cur, c, accept, sto
320     cur.execute(
"select * from med")
321     
for i in cur:
322         
if accept[6].get()==i[6] and i[1]==accept[1].get():
323             sql=
"update med set qty_left = '%s' where name = '%s'" % (str(int(i[3])+int(accept[3].get())),accept[1].get())
324             cur.execute(sql)
325             c.commit()
326             top=Tk()
327             Label(top,width=
20, text='Modified!').pack()
328             top.mainloop()
329             main_menu()
330         
else:
331             submit()
332     c.commit()
333
334 def exp_date(): # expiry window open-----------------------------------------------------------------------------EXPIRY
335     
global exp, s,c, cur, flag, apt, flags
336     apt.destroy()
337     flag=
'exp'
338     
from datetime import date
339     now=time.localtime()
340     n=[]
341     cur.execute(
"select *from med")
342     
for i in cur:
343         n.append(i[
1])
344     c.commit()
345     exp=Tk()
346     exp.title(
'EXPIRY CHECK')
347     Label(exp,text=
'Today : '+str(now[2])+'/'+str(now[1])+'/'+str(now[0])).grid(row=0, column=0, columnspan=3)
348     Label(exp,text=
'Selling Expired Medicines and Drugs is Illegal').grid(row=1, column=0,columnspan=3)
349     Label(exp,text=
'-'*80).grid(row=2, column=0,columnspan=3)
350     s=Spinbox(exp,values=n)
351     s.grid(row=
3, column=0)
352     Button(exp,text=
'Check Expiry date', command=s_exp).grid(row=3, column=1)
353     Label(exp,text=
'-'*80).grid(row=4, column=0,columnspan=3)
354     
if flags=='apt1':
355         Button(exp,text=
'Main Menu', command=main_cus).grid(row=5, column=2)
356     
else:
357         Button(exp,width=
20,text='Check Products expiring', command=exp_dt).grid(row=5, column=0)
358         Button(exp,text=
'Main Menu', command=main_menu).grid(row=5, column=2)
359     exp.mainloop()
360
361 def s_exp(): # shows the expiry date of the medicine entered
362     
global c, cur, s, exp, top
363     
from datetime import date
364     now=time.localtime()
365     d1 = date(now[
0],now[1],now[2])
366     cur.execute(
"select * from med")
367     
for i in cur:
368         
if(i[1]==s.get()):
369             q=i[
6]
370             d2=date(
int('20'+q[8:10]),int(q[3:5]),int(q[0:2]))
371             
if d1>d2:
372                 Label(exp, text=
'EXPIRED! on '+i[6]).grid(row=3, column=2)
373                 top=Tk()
374                 Label(top, text=
'EXPIRED!').pack()
375             
else:
376                 Label(exp, text=i[
6]).grid(row=3, column=2)
377     c.commit()
378
379 def exp_dt(): # shows medicine to expire
in the coming week
380     
global c, cur, exp, top
381     x=
0
382     z=
1
383     
from datetime import datetime, timedelta
384     N =
7
385     dt = datetime.now() + timedelta(days=N)
386     d=str(dt)
387     
from datetime import date
388     now=time.localtime()
389     d1 = date(now[
0],now[1],now[2])
390     d3 = date(
int(d[0:4]),int(d[5:7]),int(d[8:10]))
391     Label(exp,text=
'S.No'+' '+'Name'+' Qty. '+'Exp_date').grid(row=6,column=0,columnspan=2)
392     cur.execute(
"select * from med")
393     
for i in cur:
394         s=i[
6]
395         d2=date(
int('20'+s[8:10]),int(s[3:5]),int(s[0:2]))
396         
397         
if d1<d2<d3:
398             Label(exp,text=str(z)+
'. '+str(i[1])+' '+str(i[3])+' '+str(i[6])).grid(row=x+7,column=0,columnspan=2)
399             x+=
1
400             z+=
1
401         elif d1>d2:
402             top=Tk()
403             Label(top,width=
20, text=str(i[1])+' is EXPIRED!').pack()
404     c.commit()
405     
406 def billing(): # to create bills
for customer-------------------------------------------------------------BILLING system
407     
global c, cur, apt, flag, t, name, name1, add, st, names, qty, sl, qtys, vc_id, n, namee, lb1
408     t=
0
409     vc_id=
''
410     names=[]
411     qty=[]
412     sl=[]
413     n=[]
414     qtys=[
'']*10
415     cur.execute(
"select *from med")
416     
for i in cur:
417         n.append(i[
1])
418     c.commit()
419     
if flag=='st':
420         st.destroy()
421     
else:
422         apt.destroy()
423     flag=
'st'
424     st=Tk()
425     st.title(
'BILLING SYSTEM')
426     Label(st,text=
'-'*48+'BILLING SYSTEM'+'-'*49).grid(row=0,column=0,columnspan=7)
427     Label(st,text=
'Enter Name: ').grid(row=1,column=0)
428     name1=Entry(st)
429     name1.grid(row=
1, column=1)
430     Label(st,text=
'Enter Address: ').grid(row=2,column=0)
431     
add=Entry(st)
432     
add.grid(row=2, column=1)
433     Label(st,text=
"Value Id (if available)").grid(row=3, column=0)
434     vc_id=Entry(st)
435     vc_id.grid(row=
3, column=1)
436     Button(st,text=
'Check V.C.', command=blue).grid(row=4, column=0)
437     Label(st,text=
'-'*115).grid(row=6, column=0,columnspan=7)
438     Label(st,text=
'SELECT PRODUCT',width=25,relief='ridge').grid(row=7, column=0)
439     Label(st,text=
' RACK QTY LEFT COST ',width=25,relief='ridge').grid(row=7, column=1)
440     Button(st,text=
'Add to bill',width=15,command=append2bill).grid(row=8, column=6)
441     Label(st,text=
'QUANTITY',width=20,relief='ridge').grid(row=7, column=5)
442     qtys=Entry(st)
443     qtys.grid(row=
8,column=5)
444     refresh()
445     Button(st,width=
15,text='Main Menu', command=main_menu).grid(row=1,column=6)
446     Button(st,width=
15,text='Refresh Stock', command=refresh).grid(row=3,column=6)
447     Button(st,width=
15,text='Reset Bill', command=billing).grid(row=4,column=6)
448     Button(st,width=
15,text='Print Bill', command=print_bill).grid(row=5,column=6)
449     Button(st,width=
15,text='Save Bill', command=make_bill).grid(row=7,column=6)
450     
451     st.mainloop()
452
453 def refresh():
454     
global cur, c, st, lb1, lb2, vsb
455     def onvsb(*args):
456         lb1.yview(*args)
457         lb2.yview(*args)
458
459     def onmousewheel():
460         lb1.ywiew=(
'scroll',event.delta,'units')
461         lb2.ywiew=(
'scroll',event.delta,'units')
462         
return 'break'
463     cx=
0
464     vsb=Scrollbar(orient=
'vertical',command=onvsb)
465     lb1=Listbox(st,width=
25, yscrollcommand=vsb.set)
466     lb2=Listbox(st ,width=
25,yscrollcommand=vsb.set)
467     vsb.grid(row=
8,column=2,sticky=N+S)
468     lb1.grid(row=
8,column=0)
469     lb2.grid(row=
8,column=1)
470     lb1.bind(
'<MouseWheel>',onmousewheel)
471     lb2.bind(
'<MouseWheel>',onmousewheel)
472     cur.execute(
"select *from med")
473     
for i in cur:
474         cx+=
1
475         lb1.insert(cx,str(i[
0])+'. '+str(i[1]))
476         lb2.insert(cx,
' '+str(i[7])+' '+str(i[3])+' Rs '+str(i[4]))
477     c.commit()
478     lb1.bind(
'<<ListboxSelect>>', select_mn)
479
480 def select_mn(e): #store the selected medicine
from listbox
481     
global st, lb1, n ,p, nm, sl1
482     p=lb1.curselection()
483     x=
0
484     sl1=
''
485     
from datetime import date
486     now=time.localtime()
487     d1 = date(now[
0],now[1],now[2])
488     cur.execute(
"select * from med")
489     
for i in cur:
490         
if x==int(p[0]):
491             sl1=
int(i[0])
492             
break
493         x+=
1
494     c.commit()
495     print (sl1)
496     nm=n[x]
497     print (nm)
498     
499 def append2bill(): # append to the bill
500     
global st, names, nm , qty, sl,cur, c, sl1
501     sl.append(sl1)
502     names.append(nm)
503     qty.append(qtys.
get())
504     print (qty)
505     print (sl[len(sl)-
1],names[len(names)-1],qty[len(qty)-1])
506     
507 def blue(): # check
if valued customer
508     
global st ,c, cur, named, addd, t, vc_id
509     cur.execute(
"select * from cus")
510     
for i in cur:
511         
if vc_id.get()!='' and int(vc_id.get())==i[2]:
512             named=i[
0]
513             addd=i[
1]
514             Label(st,text=named,width=
20).grid(row=1, column=1)
515             Label(st,text=addd,width=
20).grid(row=2, column=1)
516             Label(st,text=i[
2],width=20).grid(row=3, column=1)
517             Label(st, text=
'Valued Customer!').grid(row=4, column=1)
518             t=
1
519             
break
520     c.commit()
521
522 def make_bill(): # makes bill
523     
global t, c, B, cur, st, names, qty, sl , named, addd, name1, add,det, vc_id
524     price=[
0.0]*10
525     q=
0
526     det=[
'','','','','','','','']
527     det[
2]=str(sl)
528     
for i in range(len(sl)):
529         print (sl[i],
' ',qty[i],' ',names[i])
530     
for k in range(len(sl)):
531         cur.execute(
"select * from med where sl_no=?",(sl[k],))
532         
for i in cur:
533             price[k]=
int(qty[k])*float(i[4])
534             print (qty[k],price[k])
535             cur.execute(
"update med set qty_left=? where sl_no=?",(int(i[3])-int(qty[k]),sl[k]))
536         c.commit()
537     det[
5]=str(random.randint(100,999))
538     B=
'bill_'+str(det[5])+'.txt'
539     total=
0.00
540     
for i in range(10):
541         
if price[i] != '':
542             total+=price[i] #totalling
543     m=
'\n\n\n'
544     m+=
"===============================================\n"
545     m+=
" No :%s\n\n" % det[5]
546     m+=
" MEDPLUS CHEMIST AND DRUGGIST\n"
547     m+=
" VIT University, Katpadi, Vellore, T.M.\n\n"
548     m+=
"-----------------------------------------------\n"
549     
if t==1:
550         m+=
"Name: %s\n" % named
551         m+=
"Address: %s\n" % addd
552         det[
0]=named
553         det[
1]=addd
554         cur.execute(
'select * from cus')
555         
for i in cur:
556             
if i[0]==named:
557                 det[
7]=i[2]
558     
else:
559         m+=
"Name: %s\n" % name1.get()
560         m+=
"Address: %s\n" % add.get()
561         det[
0]=name1.get()
562         det[
1]=add.get()
563     m+=
"-----------------------------------------------\n"
564     m+=
"Product Qty. Price\n"
565     m+=
"-----------------------------------------------\n"#47, qty=27, price=8 after 2
566     
for i in range(len(sl)):
567         
if names[i] != 'nil':
568             s1=
' '
569             s1=(names[i]) + (s1 * (
27-len(names[i]))) + s1*(3-len(qty[i])) +qty[i]+ s1*(15-len(str(price[i])))+str(price[i]) + '\n'
570             m+=s1
571     m+=
"\n-----------------------------------------------\n"
572     
if t==1:
573         ntotal=total*
0.8
574         m+=
'Total'+(' '*25)+(' '*(15-len(str(total)))) + str(total)+'\n'
575         m+=
"Valued customer Discount"+ (' '*(20-len(str(total-ntotal))))+'-'+str(total-ntotal)+'\n'
576         m+=
"-----------------------------------------------\n"
577         m+=
'Total'+(' '*25)+(' '*(12-len(str(ntotal)))) +'Rs '+ str(ntotal)+'\n'
578         det[
3]=str(ntotal)
579     
else:
580         m+=
'Total'+(' '*25)+(' '*(12-len(str(total)))) +'Rs '+ str(total)+'\n'
581         det[
3]=str(total)
582         
583     m+=
"-----------------------------------------------\n\n"
584     m+=
"Dealer 's signature:___________________________\n"
585     m+=
"===============================================\n"
586     print (m)
587     p=time.localtime()
588     det[
4]=str(p[2])+'/'+str(p[1])+'/'+str(p[0])
589     det[
6]=m
590     bill=open(B,
'w')
591     bill.write(m)
592     bill.close()
593     cb=(
'cus_name','cus_add','items','Total_cost','bill_dt','bill_no','bill','val_id')
594     cur.execute(
'insert into bills values(?,?,?,?,?,?,?,?)',(det[0],det[1],det[2],det[3],det[4],det[5],det[6],det[7]))
595     c.commit()
596     
597 def print_bill():
598     win32api.ShellExecute (
0,"print",B,'/d:"%s"' % win32print.GetDefaultPrinter (),".",0)
599     
600 def show_rev(): # opens revenue window-----------------------------------------------------------------------TOTAL REVENUE
601     
global c, cur, flag,rev
602     apt.destroy()
603     cb=(
'cus_name','cus_add','items','Total_cost','bill_dt','bill_no','bill','val_id')
604     flag=
'rev'
605     rev=Tk()
606     total=
0.0
607     today=str(time.localtime()[
2])+'/'+str(time.localtime()[1])+'/'+str(time.localtime()[0])
608     Label(rev,text=
'Today: '+today).grid(row=0,column=0)
609     cur.execute(
'select * from bills')
610     
for i in cur:
611         
if i[4]==today:
612             total+=
float(i[3])
613     print (total)
614     Label(rev,width=
22,text='Total revenue: Rs '+str(total), bg='black',fg='white').grid(row=1,column=0)
615     cx=
0
616     vsb=Scrollbar(orient=
'vertical')
617     lb1=Listbox(rev,width=
25, yscrollcommand=vsb.set)
618     vsb.grid(row=
2,column=1,sticky=N+S)
619     lb1.grid(row=
2,column=0)
620     vsb.config( command = lb1.yview )
621     cur.execute(
"select * from bills")
622     
for i in cur:
623         
if i[4]==today:
624             cx+=
1
625             lb1.insert(cx,
'Bill No.: '+str(i[5])+' : Rs '+str(i[3]))
626     c.commit()
627     Button(rev,text=
'Main Menu',command=main_menu).grid(row=15,column=0)
628     rev.mainloop()
629
630
631 def search(): #search window medicine and symptom details---------------------------------SEARCH MEDICINE RACK & SYMPTOMS
632     
global c, cur, flag, st, mn, sym, flags
633     flag=
'st'
634     apt.destroy()
635     cur.execute(
"Select * from med")
636     symp=[
'nil']
637     med_name=[
'nil']
638     
for i in cur:
639         symp.append(i[
5])
640         med_name.append(i[
1])
641     st=Tk()
642     st.title(
'SEARCH')
643     Label(st, text=
' SEARCH FOR MEDICINE ').grid(row=0, column=0,columnspan=3)
644     Label(st, text=
'~'*40).grid(row=1, column=0,columnspan=3)
645     Label(st, text=
'Symptom Name').grid(row=3, column=0)
646     sym=Spinbox(st,values=symp)
647     sym.grid(row=
3, column=1)
648     Button(st,width=
15, text='Search', command=search_med).grid(row=3, column=2)
649     Label(st, text=
'-'*70).grid(row=4, column=0,columnspan=3)
650     
if flags=='apt1':
651         Button(st,width=
15, text='Main Menu', command=main_cus).grid(row=6, column=2)
652     
else:
653         Button(st,width=
15, text='Main Menu', command=main_menu).grid(row=6, column=2)
654     st.mainloop()
655
656 def search_med():
657     
global c, cur, st, sym, columns
658     cur.execute(
"select * from med")
659     y=[]
660     x=
0
661     
for i in cur:
662         
if i[5]==sym.get():
663             y.append(str(i[
0])+'. '+str(i[1])+' Rs '+str(i[4])+' Rack : '+str(i[7])+' Mfg : '+str(i[8]))
664             x=x+
1
665     top=Tk()
666     
for i in range(len(y)):
667         Label(top,text=y[i]).grid(row=i, column=
0)
668     Button(top,text=
'OK',command=top.destroy).grid(row=5, column=0)
669     c.commit()
670     top.mainloop()
671
672 def val_cus(): #to enter
new valued customer-----------------------------------------------------------NEW VALUED CUSTOMER
673     
global val, flag, dbt, name_vc, add_vc, cur, c, vc_id
674     apt.destroy()
675     cur.execute(
"select * from cus")
676     flag=
'val'
677     val=Tk()
678     Label(val,text=
"ENTER VALUED CUSTOMER DETAILS").grid(row=0,column=0,columnspan=3)
679     Label(val,text=
"-"*60).grid(row=1,column=0,columnspan=3)
680     Label(val,text=
"Name: ").grid(row=2,column=0)
681     name_vc=Entry(val)
682     name_vc.grid(row=
2, column=1)
683     Label(val,text=
"Address: ").grid(row=3,column=0)
684     add_vc=Entry(val)
685     add_vc.grid(row=
3, column=1)
686     Label(val,text=
"Value Id: ").grid(row=4,column=0)
687     vc_id=Entry(val)
688     vc_id.grid(row=
4, column=1)
689     Button(val,text=
'Submit',command=val_get).grid(row=5, column=1)
690     Button(val,text=
'Main Menu',command=main_menu).grid(row=5, column=2)
691     Label(val,text=
'-'*60).grid(row=6,column=0,columnspan=3)
692     val.mainloop()
693
694 def val_get(): #to submit
new valued customer details
695     
global name_vc, add_vc, val, dbt ,c, cur, apt, vc_id
696     cur.execute(
"insert into cus values(?,?,?)",(name_vc.get(),add_vc.get(),vc_id.get()))
697     l.execute(
"insert into log values(?,?)",(name_vc.get(),vc_id.get()))
698     cur.execute(
"select * from cus")
699     
for i in cur:
700         print (i[
0], i[1], i[2])
701     c.commit()
702     login.commit()
703     
704 def again(): #
for login window-----------------------------------------------------------------------------LOGIN WINDOW
705     
global un, pwd, flag, root, apt
706     
if flag=='apt':
707         apt.destroy()
708     root=Tk()
709     root.title(
'YashVone SOFTWARE SOLUTIONS')
710     Label(root,text=
'CHEMIST AND DRUG SHOP').grid(row=0,column=0,columnspan=5)
711     Label(root,text=
"VIT UNIVERSITY, KATPADI, VELLORE, TM").grid(row=1,column=0,columnspan=5)
712     Label(root,text=
'-------------------------------------------------------').grid(row=2,column=0,columnspan=5)
713     Label(root, text=
'Username').grid(row=3, column=0)
714     un=Entry(root,width=
10)
715     un.grid(row=
3, column=1)
716     Label(root, text=
'Password').grid(row=4, column=0)
717     pwd=Entry(root,width=
10)
718     pwd.grid(row=
4, column=1)
719     Button(root,width=
6,text='Enter',command=check).grid(row=5, column=0)
720     Button(root,width=
6,text='Close',command=root.destroy).grid(row=5, column=1)
721     root.mainloop()
722     
723 def check(): #
for enter button in login window
724     
global un, pwd, login, l, root
725     u=un.
get()
726     p=pwd.
get()
727     l.execute(
"select * from log")
728     
for i in l:
729         
if i[0]==u and i[1]==p and u=='admin':
730             root.destroy()
731             open_win()
732         elif i[
0]==u and i[1]==p:
733             root.destroy()
734             open_cus()
735     login.commit()
736
737 def main_menu(): #controls open and close of main menu window----------------------------------------RETURN TO MAIN MENU
738     
global sto, apt, flag, root, st, val, exp, st1,rev
739     
if flag=='sto':
740         sto.destroy()
741     
if flag=='rev':
742         rev.destroy()
743     elif flag==
'st':
744         st.destroy()
745     elif flag==
'st1':
746         st1.destroy()
747     elif flag==
'val':
748         val.destroy()
749     elif flag==
'exp':
750         exp.destroy()
751     elif flag==
'd':
752         d.destroy()
753     open_win()
754
755 def main_cus():
756     
global st, flag, exp
757     
if flag=='exp':
758         exp.destroy()
759     elif flag==
'st':
760         st.destroy()
761     open_cus()
762     
763 def open_cus(): #OPENS MAIN MENU----------------------------------------------------------------------------MAIN MENU
764     
global apt, flag, flags
765     flags=
'apt1'
766     apt=Tk()
767     apt.title(
"Interface")
768     Label(apt, text=
"MEDPLUS CHEMIST AND DRUGGIST").grid(row=0,column=0)
769     Label(apt, text=
'*'*40).grid(row=1,column=0)
770     Label(apt, text=
'* WELCOME *').grid(row=2,column=0)
771     Label(apt, text=
'-'*40).grid(row=3,column=0)
772     Label(apt, text=
"Customer Services").grid(row=4,column=0)
773     Label(apt, text=
'-'*40).grid(row=5,column=0)
774     Button(apt,text=
'Search', width=15, command=search).grid(row=6,column=0)
775     Button(apt,text=
'Expiry Check', width=15, command=exp_date).grid(row=7,column=0)
776     
777     Label(apt, text=
'-'*40).grid(row=8,column=0)
778     Button(apt,text=
'Logout',command=again1).grid(row=9, column=0)
779     apt.mainloop()
780 def again1():
781     
global flags
782     apt.destroy()
783     flags=
''
784     again()
785 again()


Gõ tìm kiếm nhanh...